


function AbstractResource() { 
    return {
        lang : {},
        
        setLang : function(lang) {
            if (lang in this.lang) {
                this.currLang = lang;
            }
            else {
                this.currLang = "en";
            }
        },

        texts : function text() {
            return this.lang[this.currLang];
        },
    }
};






function GlobalResources() {

};

GlobalResources.Matrix = function MatrixMessages() {
    
    var suffixD = function suffix(n) {
        if (n % 10 == 3 && n % 100 != 13) {
            return "-ю";
        }
        return "-ую";
    }

    var suffixR = function suffix(n) {
        if (n % 10 == 3 && n % 100 != 13) {
            return "-ей";
        }
        return "-ой";
    }

    var getNumberV = function(n) {
        this.numberWords = ["первую", "вторую", "третью", "четвертую", "пятую"];
        if (n < 6) {
            return numberWords[n - 1];
        }
        return n + suffixD(n);
    }

    var getNumberD = function(n) {
        this.numberWords = ["первой", "второй", "третьей", "четвертой", "пятой"];
        if (n < 6) {
            return numberWords[n - 1];
        }
        return n + suffixR(n);
    }
    
    this.swapRows = function swapRows(i, j) {
        return "Поменяем местами " + getNumberV(i) + " и " + getNumberV(j) + " строки"; 
    }

    this.mulRow = function(row, mul) {
        return "Умножим " + row + suffixD(row) + " строку на " + mul;
    }

    this.addRows = function(srcRow, destRow, mul) {
        var k = "к";
        if (destRow == 2) {
            k = "ко";
        }
        var str = "";
        if (mul != 1 ) {
            str = "Умножим " + getNumberV(srcRow) + " строку на " + mul + " и прибавим " + k + " " + getNumberD(destRow) + " строке";
        }
        else {
            str = "Прибавим " + getNumberV(srcRow) + " строку к " + getNumberD(destRow);
        }
        return str; 
    }
}

